package com.atguigu.observer.jdk;

import java.util.Observer;

/**
 * @Description: 观察者模式
 * @Author lixiaolong
 * @Date 2023/10/12
 */
public class Client {
	/**
	 * 观察者模式
	 * 1、多对一的依赖关系，一：是被观察者 多：是观察者
	 * 2、被观察者 subject 被观察类里包含多个观察者
	 * 3、观察者 observer  接收 subject的变化
	 *
	 * @param args
	 */
	public static void main(String[] args) {
		//创建被观察者 一个WeatherData
		WeatherData weatherData = new WeatherData();

		//创建观察者
		Observer currentConditions = new CurrentConditions();
		Observer baiduSite = new BaiduSite();

		//注册观察者到被观察者类中
		weatherData.addObserver(currentConditions);
		weatherData.addObserver(baiduSite);

		//测试 被观察者改变了 状态
		System.out.println("通知各个注册的观察者, 看看信息");
		weatherData.setData(10f, 100f, 30.3f);

		// 移除 一个观察者
		weatherData.deleteObserver(currentConditions);
		//测试
		System.out.println();
		System.out.println("通知各个注册的观察者, 看看信息");
		weatherData.setData(10f, 100f, 30.3f);
	}

}
